package com.chagee.store.operation.api.service;

import com.chagee.base.exception.SoaException;
import com.chagee.base.utils.*;
import com.chagee.store.operation.api.request.*;
import com.chagee.store.operation.api.response.SettlementResponse;
import com.chagee.store.operation.api.response.StoreWorkOrderDeviceResponse;
import com.chagee.store.operation.api.response.TaskExecutionResponse;
import com.chagee.store.operation.api.response.WorkOrderResponse;

import javax.validation.Valid;
import java.util.List;

/**
 * @Author : hk
 * @Date : 2024/9/26
 */
public interface ISupplierWorkOrderApi {

	/**
	 * 获取工单列表查询
	 */
	SoaResponse<PaginationData<WorkOrderResponse>,Void> list(@Valid PaginationRequest<WorkOrderRequest> request);

	/**
	 * 工单详情
	 */
	SoaResponse<WorkOrderResponse,Void> queryDetail(@Valid WorkOrderInfoRequest request);

	/**
	 * 交接信息
	 * @param workOrderNumber
	 * @return
	 */
	SoaResponse<StoreWorkOrderDeviceResponse,Void> getWorkOrderDevice(String workOrderNumber);

	/**
	 * 任务详情
	 */
	SoaResponse<PaginationData<TaskExecutionResponse>,Void> queryTaskList(PaginationRequest<TaskExecutionRequest> request);

	/**
	 * 导出
	 */
	SoaResponse<List<WorkOrderResponse>,Void> export(WorkOrderRequest request);

	/**
	 * 结算单列表
	 */
	SoaResponse<PaginationData<SettlementResponse>,Void> querySettlementPage(PaginationRequest<SettlementRequest> request);

	/**
	 * 供应商确认
	 */
	SoaResponse<Boolean, SoaException> supplierVerify(@Valid SupplierVerifyRequest request);

	/**
	 * 结算单详情
	 */
	SoaResponse<SettlementResponse, Void> settlementDetail(@Valid SettlementDetailRequest request);

	/**
	 * 结算工单详情
	 */
	SoaResponse<PaginationData<WorkOrderResponse>, Void> queryOrderList(PaginationRequest<SettlementOrderRequest> request);

	/**
	 * 获取sso链接
	 *
	 * @param request
	 * @return
	 */
	SoaResponse<String, SoaException> getUploadInvoiceUrl(@Valid InvoiceRequest request);

	/**
	 * 过期工单工单申诉
	 * @param request
	 * @return
	 */
	SoaResponse<Boolean, SoaException> orderAppeal(@Valid OrderAppealRequest request);

	/**
	 * 结算单供应商驳回
	 * @param request
	 * @return
	 */
	SoaResponse<Boolean, SoaException> supplierRejected(@Valid SupplierRejectedRequest request);

	/**
	 * 提交线下支付
	 */
	SoaResponse<Boolean, SoaException> offlinePay(@Valid OfflinePayRequest request);

}
